//Map 数据结构 跟EMCAScript里面对象十分类似，本质上他们都是键值对集合，但是对象结构中的键只能是字符串类型，存放复杂数据结构类型时会有些问题

const obj = {}
obj[true] = 'value'
obj[123] = 'value'
obj[{a:1}] = 'value'

console.log(Object.keys(obj)) //['123','true','[object Object]'] 这些键都被转化为了字符串，如果给我们的对象添加的键不是字符串，内部将会把这个数据toSring的结果作为一个键
console.log(obj[`[object Object]`])// value
console.log(obj[{}]) //value 跟上面的重复，无法区分，Map变产生


const m = new Map()

const tom = {name : 'tom'}

m.set(tom,90)// 这里的键可以是任意类型数据,tom是键，值为90

console.log(m) // Map {{ name:'tom'} => 90}

console.log(m.get(tom)) //90

// m.has()
// m.delete()
// m.clear()

m.forEach((value,key) =>{
    console.log(value,key)// 90 {name:'tom'}
})

//Map 用任意类型的数据作为键，而对象只能够使用字符串作为键